package com.javaee.mvc.part2.servlet;

import com.javaee.mvc.part2.dao.UserDao;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * 控制层，实现与前端浏览器的交互。 接收前端参数并调用 DAO 层数据实现相关功能，同时返回视图页面。
 */
@WebServlet("/users") // 映射为 /users 更符合资源命名规范
public class UserServlet extends HttpServlet {
    private UserDao userDao = new UserDao();

    /**
     * 初始化 Servlet。 该方法在 Servlet 生命周期中被 Web 服务器调用一次，用于完成 Servlet 的初始化工作。
     */
    @Override
    public void init() throws ServletException {
        // 初始化代码可以放在这里
        userDao.initializeUsers();
    }

    /**
     * 处理 HTTP GET 请求。 数据查看和删除操作通常使用 HTTP GET 请求完成。
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // action 表示用户操作类型
        String action = request.getParameter("action");
        if (action == null) {
            action = "list";
        }
        switch (action) {
            case "list":
                listUsers(request, response);
                break;
            case "showForm":
                showForm(request, response);
                break;
            case "view":
                viewUser(request, response);
                break;
            case "delete":
                deleteUser(request, response);
                break;
            default:
                listUsers(request, response);
                break;
        }
    }

    /**
     * 处理 HTTP POST 请求。 添加、更新操作使用 HTTP POST 请求。
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        String action = request.getParameter("action");
        switch (action) {
            case "insert":
                insertUser(request, response);
                break;
            case "update":
                updateUser(request, response);
                break;
            default:
                break;
        }
    }

    /**
     * 列出所有用户。
     */
    private void listUsers(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
    }
    /**
     * 显示用户详情。
     */
    private void viewUser(HttpServletRequest request, HttpServletResponse response) {

    }
    /**
     * 插入新用户。
     */
    private void insertUser(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
    }
    /**
     * 更新现有用户。
     */
    private void updateUser(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
    }
    /**
     * 删除指定用户。
     */
    private void deleteUser(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
    }

    /**
     * 显示用户表单。
     */
    private void showForm(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
    }
}